package in.lib.adapter;
import in.lib.Constants;
import in.lib.adapter.base.RobinAdapter;
import in.lib.handler.UserFollowResponseHandler;
import in.lib.handler.UserUnFollowResponseHandler;
import in.lib.helper.ThemeHelper;
import in.lib.holder.AccountHolder;
import in.lib.manager.APIManager;
import in.lib.utils.Dimension;
import in.model.SimpleUser;
import in.model.base.NetObject;
import in.rob.client.R;
import in.rob.client.SettingsActivity;
import java.util.List;
import lombok.Getter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class AccountAdapter extends RobinAdapter
{
private final Dimension mDimension;
private final int viewId;
@Getter private final Context context;
public AccountAdapter(Context context, List items)
{
this(context, R.layout.account_list_item, items);
}
public AccountAdapter(Context context, int viewId, List items)
{
super(context, items);
this.context = context;
this.viewId = viewId;
this.mDimension = new Dimension(context);
}
@Override public View getView(int position, View convertView, ViewGroup parent)
{
AccountHolder holder;
NetObject item = getItem(position);
if (convertView == null)
{
convertView = getLayoutInflater().inflate(viewId, null);
holder = new AccountHolder();
holder.avatar = (ImageView)convertView.findViewById(R.id.avatar);
holder.username = (TextView)convertView.findViewById(R.id.username);
holder.mentionName = (TextView)convertView.findViewById(R.id.mention_name);
holder.actionButton = (Button)convertView.findViewById(R.id.follow_button);
holder.actionButton = holder.actionButton == null ? (Button)convertView.findViewById(R.id.remove_button) : holder.actionButton;
convertView.setTag(R.id.TAG_VIEW_HOLDER, holder);
if (holder.actionButton != null)
{
holder.actionButton.setOnClickListener(this);
}
}
else
{
holder = (AccountHolder)convertView.getTag(R.id.TAG_VIEW_HOLDER);
}
AccountHolder.populate(holder, convertView, item);
if (holder.actionButton != null)
{
holder.actionButton.setTag(position);
}
return convertView;
}
@Override public void onClick(final View v)
{
final SimpleUser user = (SimpleUser)getItem((Integer)v.getTag());
if (v.getId() == R.id.follow_button)
{
if (user.isYou())
{
Intent settings = new Intent(getContext(), SettingsActivity.class);
settings.putExtra(Constants.EXTRA_START_PAGE, 0);
context.startActivity(settings);
return;
}
final int redButton = ThemeHelper.getDrawableResource(getContext(), R.attr.rbn_red_button);
final int greyButton = ThemeHelper.getDrawableResource(getContext(), R.attr.rbn_grey_button);
if (user.getYouFollow())
{
APIManager.getInstance().unfollowUser(user.getId(), new UserUnFollowResponseHandler()
{
@Override public void onFinish(boolean failed)
{
super.onFinish(failed);
if (failed)
{
user.setYouFollow(true);
((Button)v).setText(R.string.unfollow);
((Button)v).setBackgroundResource(greyButton);
Toast.makeText(getContext(), context.getString(R.string.unfollow_failed) + " @" + user.getMentionName(), Toast.LENGTH_SHORT).show();
}
}
});
}
else
{
APIManager.getInstance().followUser(user.getId(), new UserFollowResponseHandler()
{
@Override public void onFinish(boolean failed)
{
super.onFinish(failed);
if (failed)
{
user.setYouFollow(false);
((Button)v).setText(R.string.follow);
((Button)v).setBackgroundResource(redButton);
Toast.makeText(getContext(), context.getString(R.string.follow_failed) + " @" + user.getMentionName(), Toast.LENGTH_SHORT).show();
}
}
});
}
user.setYouFollow(!user.getYouFollow());
((Button)v).setText(user.getYouFollow() ? R.string.unfollow : R.string.follow);
v.setBackgroundResource(user.getYouFollow() ? greyButton : redButton);
}
else if (v.getId() == R.id.remove_button)
{
removeItemAt((Integer)v.getTag());
notifyDataSetChanged();
}
}
}